package cn.tedu.rabbitmqspring.m2;

import org.springframework.amqp.core.Queue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import javax.annotation.PostConstruct;

//简单模式 ：
@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class,args);
    }

    @Bean
    public Queue helloWorldQueue(){
        //封装  队列参数
        //自动配置类会自动发现 这个对象并在服务器上创建这个队列;
        return new Queue("task_queue");
    }

    //用生产者 发送消息
    @Autowired
    private Producer p;
    //消费者是自动接收的

    /**
     * @PostConstruct
     *      spring在完成扫描创建实例，完成所有的依赖注入后，会自动的执行 @postConstruct方法
     *
     *      spring单线程执行下面的流程
     *      创建实例 --> 完成注入 --> @postConstruct ---> 后续执行
     *
     */
    @PostConstruct
    public void test(){
//        new Thread(new Runnable() {
//            @Override
//            public void run() {
//                p.send();
//            }
//        }).start();
        //lambda 表达式 匿名内部类的简写  提供了一些其他的语法
        new Thread(() -> p.send()).start();



    }


}
